package 实现多线程;
/*
* 线程调度：两种调度方式
* 分时调度模型：所有线程轮流使用cpu的使用权，平均分配每个线程占用cpu的时间片
* 抢占式调度模型：优先让优先级高的线程使用cpu,如果线程的优先级相同，那么会随机选择一个，优先级高的线程获取的cpu时间片相对多一点
* java使用的是抢占式调度模型
* 多线程程序执行是有随机性的，因为谁抢到cpu的使用权是不一定的
* */
/*
* 优先级的相关方法
* final int getPriority() 返回此线程的优先级
* final void setPriority(int newPriority) 更改此线程的优先级，线程默认优先级是5；线程优先级的范围是1-10
* */
public class 线程优先级 extends Thread{
    public static void main(String[] args) {
        ThreadPriority tp1 = new ThreadPriority();
        ThreadPriority tp2 = new ThreadPriority();
        ThreadPriority tp3 = new ThreadPriority();
        /*给线程设置特定的名称*/
        tp1.setName("高铁");
        tp2.setName("飞机");
        tp3.setName("汽车");
        /*public final int getPriority() 返回此线程的优先级*/
        System.out.println(tp1.getPriority());/*5*/
        System.out.println(tp2.getPriority());/*5*/
        System.out.println(tp3.getPriority());/*5*/
        /*线程里面常用的优先级*/
        System.out.println(Thread.MAX_PRIORITY);
        System.out.println(Thread.MIN_PRIORITY);
        System.out.println(Thread.NORM_PRIORITY);
        /*public final void setPriority(int newPriority):更改此线程的优先级*/
        /*优先级高的线程先执行*/
        tp1.setPriority(10);
        tp2.setPriority(5);
        tp3.setPriority(1);
        /*启动线程*/
        tp1.start();
        tp2.start();
        tp3.start();
    }
}
class ThreadPriority extends Thread{
    public void run(){
        for (int i = 0; i < 100; i++) {
            System.out.println(getName()+":"+i);
        }
    }
}
